get과 set
✒️ 2025-05-23 15:05 내용 수정
속성 가져오기 - get 접근자
객체의 속성에 접근할 때 호출할 함수를 바인딩하는 구문
- 참고 자료 : mdn web docs 접근자, JavaScript info 프로퍼티 getter와 setter
- Java의 Getter와 비슷하다.
- 접근자 property이며, 접근할 때 접근자 이름으로 작성하고 소괄호를 사용하지 않는다.
- 매개변수가 0개여야 하며, 속성 이름에 대한 표현식으로도 함수에 바인딩할 수 있다.
- 클래스에서 사용 시 해당 get property는 인스턴스의 프로토타입에 정의된다.
{ // 객체나 클래스
get prop() {
return property;
}
}
{ // 객체나 클래스
get [expression]() {
// 실행문
}
}
- 접근자를 삭제할 땐
delete를 사용한다.
delete obj.propertyName;
Object.definedProperty()의 get()
- 이미 존재하는 객체에 접근자를 추가할 때
Object.definedProperty()를 사용한다. - 클래스에서 사용 시 get과 다르게 property를 인스턴스 자체에 직접 정의한다.
let test = {key : value};
Object.defineProperty(test, "val", {
get() {
return this.key;
}
})
console.log(test.b); // value
속성 할당하기 - set 접근자
객체의 속성을 할당할 때 호출할 함수를 바인딩하는 구문
- 참고 자료 : mdn web docs 설정자
- Java의 Getter와 비슷하다.
- 접근자 property이며, 접근할 때 접근자 이름으로 작성하고 소괄호를 사용하지 않는다.
- 매개변수는 최대 1개까지만 가능하다.
{ // 객체나 클래스
set prop(val) {
this.property = val;
}
}
{ // 객체나 클래스
set [expression](val) {
// 실행문
}
}
- 접근자를 삭제할 땐
delete를 사용한다.
delete obj.propertyName;
Object.definedProperty()의 set()
- 이미 존재하는 객체에 접근자를 추가할 때
Object.definedProperty()를 사용한다.
let test = {key : value};
Object.defineProperty(test, "val", {
set(param) {
this.key = param;
}
})
console.log(test.b); // param
클래스에서 get과 set 사용
- 클래스의 property를 get과 set으로 접근할 수 있다.
- 바인딩하는 함수의 이름은 접근할 속성의 이름으로 지정한다.
- get만 사용할 경우 set이 없어 property에 접근하려고 하면 에러 메시지가 발생한다. 따라서 get을 만든다면 set도 만들어야 한다.
- 클래스에서 사용되는 getter와 setter의 property 앞에 언더스코어("_") 표시는 getter와 setter 메소드의 property 무한 참조를 방지하기 위해 사용한다.
class ClassName{
constructor(key1) {
this.key1 = key1;
}
get key1() {
return this._key1;
}
set key1(name) {
this._key1 = name;
}
}
let test = new ClassName(1, 2);
console.log(test.key1); // 1